From 559c3c7da1e7d63de0768ee2cd9cec2bf3daf437 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sat, 10 Dec 2011 06:10:05 +0100 Subject: [PATCH] treeview: Add a CURSOR_INVALID flag to set_cursor_row() This is necessary so the code doesn't attempt to do things with the previous cursor, which currently cause crashes. --- gtk/gtktreeview.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 0f1ec774d2..c8a1438f69 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -154,7 +154,8 @@ enum typedef enum { CLEAR_AND_SELECT = (1 << 0), - CLAMP_NODE = (1 << 1) + CLAMP_NODE = (1 << 1), + CURSOR_INVALID = (1 << 2) } SetCursorFlags; /* This lovely little value is used to determine how far away from the title bar @@ -9098,12 +9099,11 @@ gtk_tree_view_row_deleted (GtkTreeModel *model, if (cursor_node) { GtkTreePath *cursor_path = _gtk_tree_path_new_from_rbtree (cursor_tree, cursor_node); - tree_view->priv->cursor_node = NULL; - gtk_tree_view_real_set_cursor (tree_view, cursor_path, CLEAR_AND_SELECT); + gtk_tree_view_real_set_cursor (tree_view, cursor_path, CLEAR_AND_SELECT | CURSOR_INVALID); gtk_tree_path_free (cursor_path); } else - gtk_tree_view_real_set_cursor (tree_view, NULL, CLEAR_AND_SELECT); + gtk_tree_view_real_set_cursor (tree_view, NULL, CLEAR_AND_SELECT | CURSOR_INVALID); } else if (selection_changed) g_signal_emit_by_name (tree_view->priv->selection, "changed"); @@ -12911,7 +12911,7 @@ gtk_tree_view_real_collapse_row (GtkTreeView *tree_view, /* if we change the cursor, we also change the selection, * so no need to emit selection-changed. */ if (cursor_changed) - gtk_tree_view_real_set_cursor (tree_view, path, CLEAR_AND_SELECT); + gtk_tree_view_real_set_cursor (tree_view, path, CLEAR_AND_SELECT | CURSOR_INVALID); else if (selection_changed) g_signal_emit_by_name (tree_view->priv->selection, "changed"); @@ -13162,7 +13162,7 @@ gtk_tree_view_real_set_cursor (GtkTreeView *tree_view, GtkTreePath *path, SetCursorFlags flags) { - if (tree_view->priv->cursor_node) + if (!(flags & CURSOR_INVALID) && tree_view->priv->cursor_node) { _gtk_tree_view_queue_draw_node (tree_view, tree_view->priv->cursor_tree, -- 2.30.2